1. Field of the Invention
The present invention relates to the field of massively parallel computer systems; more particularly, the present invention relates to a method and apparatus for using multiple input/output (I/O) proxy processes in a massively parallel computer.
2. Description of Related Art
Many scientific applications such as nuclear explosion simulation, seismic exploration, and weather forecasting require large quantities of processing power and are thus ideal for massively parallel processor (MPP) computers. MPP computers use a large number of processors--compute nodes--that are interconnected through a network to run one or more application processes and a large number of processors--service and input/output (I/O) nodes--to perform I/O services for the application processes.
A first operating system, such as the Cougar operating system, is run on the compute nodes and a second operating system, such as a version of the Open System Foundation (OSF/1) operating system, is run on the service nodes and the I/O nodes. The first operating system is typically a light-weight operating system optimized for performance, scalability, and availability in running the application processes. In order to make this operating system lightweight, the first operating system typically does not include any I/O capability. In contrast, the second operating system is typically a fully functional UNIX operating system capable of performing I/O services. I/O proxy processes run under the second operating system as a proxy for applications running under the first operating system. These I/O proxy processes provide I/O services to the applications.
The processing power of an MPP computer typically scales efficiently with the number of compute nodes. The volume of I/O requests typically increases as the number of compute nodes increases.
As the number of I/O requests increase, the ability of the I/O proxy processes to handle these I/O requests will eventually become saturated thus creating an I/O bottleneck. This bottleneck limits the ability of the I/O proxy processes to more completely utilize the bandwidth of the I/O hardware.
One type of I/O request issued by application processes is a blocking (synchronous) I/O request. When an I/O proxy process receives a blocking I/O request, it becomes unavailable to process subsequent I/O requests (it blocks) until the I/O operation associated with the blocking I/O request is completed. By making an I/O proxy process unavailable for periods of time, the ability of the I/O proxy process to more completely utilize the bandwidth of the I/O hardware is reduced.
What is needed is a method and apparatus to more completely exploit the bandwidth of I/O hardware in a massively parallel processor (MPP) computer.